Source:Artilist.h
Below is the full text to include/artilist.h from NetHack 3.4.3. To link to a particular line, write [[artilist.h#line123]], for example. 1. /* SCCS Id: @(#)artilist.h 3.4 2003/02/12 */ 2. /* Copyright © Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3. /* NetHack may be freely redistributed. See license for details. */ 4. 5. #ifdef MAKEDEFS_C 6. /* in makedefs.c, all we care about is the list of names */ 7. 8. #define A(nam,typ,s1,s2,mt,atk,dfn,cry,inv,al,cl,rac,cost) nam 9. 10. static const char *artifact_names[] = { 11. #else 12. /* in artifact.c, set up the actual artifact list structure */ 13. 14. #define A(nam,typ,s1,s2,mt,atk,dfn,cry,inv,al,cl,rac,cost) \ 15. { typ, nam, s1, s2, mt, atk, dfn, cry, inv, al, cl, rac, cost } 16. 17. #define NO_ATTK {0,0,0,0} /* no attack */ 18. #define NO_DFNS {0,0,0,0} /* no defense */ 19. #define NO_CARY {0,0,0,0} /* no carry effects */ 20. #define DFNS© {0,c,0,0} 21. #define CARY© {0,c,0,0} 22. #define PHYS(a,b) {0,AD_PHYS,a,b} /* physical */ 23. #define DRLI(a,b) {0,AD_DRLI,a,b} /* life drain */ 24. #define COLD(a,b) {0,AD_COLD,a,b} 25. #define FIRE(a,b) {0,AD_FIRE,a,b} 26. #define ELEC(a,b) {0,AD_ELEC,a,b} /* electrical shock */ 27. #define STUN(a,b) {0,AD_STUN,a,b} /* magical attack */ 28. 29. STATIC_OVL NEARDATA struct artifact artilist[] = { 30. #endif /* MAKEDEFS_C */ 31. 32. /* Artifact cost rationale: 33. * 1. The more useful the artifact, the better its cost. 34. * 2. Quest artifacts are highly valued. 35. * 3. Chaotic artifacts are inflated due to scarcity (and balance). 36. */ 37. 38. 39. /* dummy element #0, so that all interesting indices are non-zero */ 40. A("", STRANGE_OBJECT, 41. 0, 0, 0, NO_ATTK, NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 0L ), 42. 43. A("Excalibur", LONG_SWORD, 44. (SPFX_NOGEN|SPFX_RESTR|SPFX_SEEK|SPFX_DEFN|SPFX_INTEL|SPFX_SEARCH),0,0, 45. PHYS(5,10), DRLI(0,0), NO_CARY, 0, A_LAWFUL, PM_KNIGHT, NON_PM, 4000L ), 46. /* 47. * Stormbringer only has a 2 because it can drain a level, 48. * providing 8 more. 49. */ 50. A("Stormbringer", RUNESWORD, 51. (SPFX_RESTR|SPFX_ATTK|SPFX_DEFN|SPFX_INTEL|SPFX_DRLI), 0, 0, 52. DRLI(5,2), DRLI(0,0), NO_CARY, 0, A_CHAOTIC, NON_PM, NON_PM, 8000L ), 53. /* 54. * Mjollnir will return to the hand of the wielder when thrown 55. * if the wielder is a Valkyrie wearing Gauntlets of Power. 56. */ 57. A("Mjollnir", WAR_HAMMER, /* Mjo:llnir */ 58. (SPFX_RESTR|SPFX_ATTK), 0, 0, 59. ELEC(5,24), NO_DFNS, NO_CARY, 0, A_NEUTRAL, PM_VALKYRIE, NON_PM, 4000L ), 60. 61. A("Cleaver", BATTLE_AXE, 62. SPFX_RESTR, 0, 0, 63. PHYS(3,6), NO_DFNS, NO_CARY, 0, A_NEUTRAL, PM_BARBARIAN, NON_PM, 1500L ), 64. 65. A("Grimtooth", ORCISH_DAGGER, 66. SPFX_RESTR, 0, 0, 67. PHYS(2,6), NO_DFNS, NO_CARY, 0, A_CHAOTIC, NON_PM, PM_ORC, 300L ), 68. /* 69. * Orcrist and Sting have same alignment as elves. 70. */ 71. A("Orcrist", ELVEN_BROADSWORD, 72. SPFX_DFLAG2, 0, M2_ORC, 73. PHYS(5,0), NO_DFNS, NO_CARY, 0, A_CHAOTIC, NON_PM, PM_ELF, 2000L ), 74. 75. /* 76. * The combination of SPFX_WARN and M2_something on an artifact 77. * will trigger EWarn_of_mon for all monsters that have the appropriate 78. * M2_something flags. In Sting's case it will trigger EWarn_of_mon 79. * for M2_ORC monsters. 80. */ 81. A("Sting", ELVEN_DAGGER, 82. (SPFX_WARN|SPFX_DFLAG2), 0, M2_ORC, 83. PHYS(5,0), NO_DFNS, NO_CARY, 0, A_CHAOTIC, NON_PM, PM_ELF, 800L ), 84. /* 85. * Magicbane is a bit different! Its magic fanfare 86. * unbalances victims in addition to doing some damage. 87. */ 88. A("Magicbane", ATHAME, 89. (SPFX_RESTR|SPFX_ATTK|SPFX_DEFN), 0, 0, 90. STUN(3,4), DFNS(AD_MAGM), NO_CARY, 0, A_NEUTRAL, PM_WIZARD, NON_PM, 3500L ), 91. 92. A("Frost Brand", LONG_SWORD, 93. (SPFX_RESTR|SPFX_ATTK|SPFX_DEFN), 0, 0, 94. COLD(5,0), COLD(0,0), NO_CARY, 0, A_NONE, NON_PM, NON_PM, 3000L ), 95. 96. A("Fire Brand", LONG_SWORD, 97. (SPFX_RESTR|SPFX_ATTK|SPFX_DEFN), 0, 0, 98. FIRE(5,0), FIRE(0,0), NO_CARY, 0, A_NONE, NON_PM, NON_PM, 3000L ), 99. 100. A("Dragonbane", BROADSWORD, 101. (SPFX_RESTR|SPFX_DCLAS), 0, S_DRAGON, 102. PHYS(5,0), NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 500L ), 103. 104. A("Demonbane", LONG_SWORD, 105. (SPFX_RESTR|SPFX_DFLAG2), 0, M2_DEMON, 106. PHYS(5,0), NO_DFNS, NO_CARY, 0, A_LAWFUL, NON_PM, NON_PM, 2500L ), 107. 108. A("Werebane", SILVER_SABER, 109. (SPFX_RESTR|SPFX_DFLAG2), 0, M2_WERE, 110. PHYS(5,0), DFNS(AD_WERE), NO_CARY, 0, A_NONE, NON_PM, NON_PM, 1500L ), 111. 112. A("Grayswandir", SILVER_SABER, 113. (SPFX_RESTR|SPFX_HALRES), 0, 0, 114. PHYS(5,0), NO_DFNS, NO_CARY, 0, A_LAWFUL, NON_PM, NON_PM, 8000L ), 115. 116. A("Giantslayer", LONG_SWORD, 117. (SPFX_RESTR|SPFX_DFLAG2), 0, M2_GIANT, 118. PHYS(5,0), NO_DFNS, NO_CARY, 0, A_NEUTRAL, NON_PM, NON_PM, 200L ), 119. 120. A("Ogresmasher", WAR_HAMMER, 121. (SPFX_RESTR|SPFX_DCLAS), 0, S_OGRE, 122. PHYS(5,0), NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 200L ), 123. 124. A("Trollsbane", MORNING_STAR, 125. (SPFX_RESTR|SPFX_DCLAS), 0, S_TROLL, 126. PHYS(5,0), NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 200L ), 127. /* 128. * Two problems: 1) doesn't let trolls regenerate heads, 129. * 2) doesn't give unusual message for 2-headed monsters (but 130. * allowing those at all causes more problems than worth the effort). 131. */ 132. A("Vorpal Blade", LONG_SWORD, 133. (SPFX_RESTR|SPFX_BEHEAD), 0, 0, 134. PHYS(5,1), NO_DFNS, NO_CARY, 0, A_NEUTRAL, NON_PM, NON_PM, 4000L ), 135. /* 136. * Ah, never shall I forget the cry, 137. * or the shriek that shrieked he, 138. * As I gnashed my teeth, and from my sheath 139. * I drew my Snickersnee! 140. * --Koko, Lord high executioner of Titipu 141. * (From Sir W.S. Gilbert's "The Mikado") 142. */ 143. A("Snickersnee", KATANA, 144. SPFX_RESTR, 0, 0, 145. PHYS(0,8), NO_DFNS, NO_CARY, 0, A_LAWFUL, PM_SAMURAI, NON_PM, 1200L ), 146. 147. A("Sunsword", LONG_SWORD, 148. (SPFX_RESTR|SPFX_DFLAG2), 0, M2_UNDEAD, 149. PHYS(5,0), DFNS(AD_BLND), NO_CARY, 0, A_LAWFUL, NON_PM, NON_PM, 1500L ), 150. 151. /* 152. * The artifacts for the quest dungeon, all self-willed. 153. */ 154. 155. A("The Orb of Detection", CRYSTAL_BALL, 156. (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), (SPFX_ESP|SPFX_HSPDAM), 0, 157. NO_ATTK, NO_DFNS, CARY(AD_MAGM), 158. INVIS, A_LAWFUL, PM_ARCHEOLOGIST, NON_PM, 2500L ), 159. 160. A("The Heart of Ahriman", LUCKSTONE, 161. (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), SPFX_STLTH, 0, 162. /* this stone does double damage if used as a projectile weapon */ 163. PHYS(5,0), NO_DFNS, NO_CARY, 164. LEVITATION, A_NEUTRAL, PM_BARBARIAN, NON_PM, 2500L ), 165. 166. A("The Sceptre of Might", MACE, 167. (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_DALIGN), 0, 0, 168. PHYS(5,0), NO_DFNS, CARY(AD_MAGM), 169. CONFLICT, A_LAWFUL, PM_CAVEMAN, NON_PM, 2500L ), 170. 171. #if 0 /* OBSOLETE */ 172. A("The Palantir of Westernesse", CRYSTAL_BALL, 173. (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), 174. (SPFX_ESP|SPFX_REGEN|SPFX_HSPDAM), 0, 175. NO_ATTK, NO_DFNS, NO_CARY, 176. TAMING, A_CHAOTIC, NON_PM , PM_ELF, 8000L ), 177. #endif 178. 179. A("The Staff of Aesculapius", QUARTERSTAFF, 180. (SPFX_NOGEN|SPFX_RESTR|SPFX_ATTK|SPFX_INTEL|SPFX_DRLI|SPFX_REGEN), 0,0, 181. DRLI(0,0), DRLI(0,0), NO_CARY, 182. HEALING, A_NEUTRAL, PM_HEALER, NON_PM, 5000L ), 183. 184. A("The Magic Mirror of Merlin", MIRROR, 185. (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_SPEAK), SPFX_ESP, 0, 186. NO_ATTK, NO_DFNS, CARY(AD_MAGM), 187. 0, A_LAWFUL, PM_KNIGHT, NON_PM, 1500L ), 188. 189. A("The Eyes of the Overworld", LENSES, 190. (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_XRAY), 0, 0, 191. NO_ATTK, NO_DFNS, CARY(AD_MAGM), 192. ENLIGHTENING, A_NEUTRAL, PM_MONK, NON_PM, 2500L ), 193. 194. A("The Mitre of Holiness", HELM_OF_BRILLIANCE, 195. (SPFX_NOGEN|SPFX_RESTR|SPFX_DFLAG2|SPFX_INTEL), 0, M2_UNDEAD, 196. NO_ATTK, NO_DFNS, CARY(AD_FIRE), 197. ENERGY_BOOST, A_LAWFUL, PM_PRIEST, NON_PM, 2000L ), 198. 199. A("The Longbow of Diana", BOW, 200. (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_REFLECT), SPFX_ESP, 0, 201. PHYS(5,0), NO_DFNS, NO_CARY, 202. CREATE_AMMO, A_CHAOTIC, PM_RANGER, NON_PM, 4000L ), 203. 204. A("The Master Key of Thievery", SKELETON_KEY, 205. (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_SPEAK), 206. (SPFX_WARN|SPFX_TCTRL|SPFX_HPHDAM), 0, 207. NO_ATTK, NO_DFNS, NO_CARY, 208. UNTRAP, A_CHAOTIC, PM_ROGUE, NON_PM, 3500L ), 209. 210. A("The Tsurugi of Muramasa", TSURUGI, 211. (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_BEHEAD|SPFX_LUCK), 0, 0, 212. PHYS(0,8), NO_DFNS, NO_CARY, 213. 0, A_LAWFUL, PM_SAMURAI, NON_PM, 4500L ), 214. 215. #ifdef TOURIST 216. A("The Platinum Yendorian Express Card", CREDIT_CARD, 217. (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_DEFN), 218. (SPFX_ESP|SPFX_HSPDAM), 0, 219. NO_ATTK, NO_DFNS, CARY(AD_MAGM), 220. CHARGE_OBJ, A_NEUTRAL, PM_TOURIST, NON_PM, 7000L ), 221. #endif 222. 223. A("The Orb of Fate", CRYSTAL_BALL, 224. (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL|SPFX_LUCK), 225. (SPFX_WARN|SPFX_HSPDAM|SPFX_HPHDAM), 0, 226. NO_ATTK, NO_DFNS, NO_CARY, 227. LEV_TELE, A_NEUTRAL, PM_VALKYRIE, NON_PM, 3500L ), 228. 229. A("The Eye of the Aethiopica", AMULET_OF_ESP, 230. (SPFX_NOGEN|SPFX_RESTR|SPFX_INTEL), (SPFX_EREGEN|SPFX_HSPDAM), 0, 231. NO_ATTK, NO_DFNS, CARY(AD_MAGM), 232. CREATE_PORTAL, A_NEUTRAL, PM_WIZARD, NON_PM, 4000L ), 233. 234. /* 235. * terminator; otyp must be zero 236. */ 237. A(0, 0, 0, 0, 0, NO_ATTK, NO_DFNS, NO_CARY, 0, A_NONE, NON_PM, NON_PM, 0L ) 238. 239. }; /* artilist[] (or artifact_names[]) */ 240. 241. #undef A 242. 243. #ifndef MAKEDEFS_C 244. #undef NO_ATTK 245. #undef NO_DFNS 246. #undef DFNS 247. #undef PHYS 248. #undef DRLI 249. #undef COLD 250. #undef FIRE 251. #undef ELEC 252. #undef STUN 253. #endif 254. 255. /*artilist.h*/ Category:source code